#include <iostream>
#include <vector>
#include <string.h>
#include <math.h>
using namespace std;
char str[1000];
int w, s;

vector<int> getarray(char s[])
{
    vector<int> v;
    //   int len = strlen(s);
    //     for (int i = 0; i < len; i++)
    //     {

    //         //由大写切换成小写或数字
    //         if (s[i] >= 'A' && s[i] <= 'Z')
    //         {
    //             if (isdigit(s[i - 1]) && i != 0)
    //             {
    //                 v.push_back(28);
    //             }
    //             if (s[i - 1] >= 'a' && s[i - 1] <= 'z' && i != 0)
    //             {
    //                 v.push_back(28);
    //                 v.push_back(28);
    //             }
    //             v.push_back(s[i] - 'A');
    //         }
    //         //小写切换大写以及数字
    //         if (s[i] >= 'a' && s[i] <= 'z')
    //         {
    //             if (!(s[i - 1] >= 'a' && s[i - 1] <= 'z'))
    //                 v.push_back(27);
    //             v.push_back(s[i] - 'a');
    //         }
    //         //由数字切换
    //         if (isdigit(s[i]))
    //         {
    //             if (!isdigit(s[i - 1]))
    //                 v.push_back(28);
    //             v.push_back(s[i] - '0');
    //         }
    //     }
    int len = strlen(s);
    for (int i = 0; i < len; i++)
    {

        //由大写切换成小写或数字
        if (s[i] >= 'A' && s[i] <= 'Z')
        {
            v.push_back(s[i] - 'A');
            if (isdigit(s[i + 1]) && i + 1 != len)
            {
                v.push_back(28);
            }
            if (s[i + 1] >= 'a' && s[i + 1] <= 'z' && i + 1 != len)
            {
                v.push_back(27);
            }
        }
        //小写切换大写以及数字
        if (s[i] >= 'a' && s[i] <= 'z')
        {
            v.push_back(s[i] - 'a');
            if (isdigit(s[i + 1]) && i + 1 != len)
            {
                v.push_back(28);
            }
            if (s[i + 1] >= 'A' && s[i + 1] <= 'Z' && i + 1 != len)
            {
                v.push_back(28);
                v.push_back(28);
            }
        }
        //由数字切换
        if (isdigit(s[i]))
        {
            v.push_back(s[i] - '0');
            if (s[i + 1] >= 'A' && s[i + 1] <= 'Z' && i + 1 != len)
            {
                v.push_back(28);
            }
            if (s[i + 1] >= 'a' && s[i + 1] <= 'z' && i + 1 != len)
            {
                v.push_back(27);
            }
        }
    }
    if (v.size() % 2 != 0)
        v.push_back(29);
    vector<int> sum;
    for (int i = 0; i < v.size(); i += 2)
    {
        sum.push_back(30 * v[i] + v[i + 1]);
    }
    return sum;
}

vector<int> check(vector<int> sum)

{
    if (s == -1)
    {
        int len = sum.size() + 1;
        if (len % w == 0)
        {
            sum.insert(sum.begin(), len);
        }
        else
        {
            int temp = len % w;
            int add_length = w - temp;
            sum.insert(sum.begin(), len + add_length);
            for (int i = 0; i <= add_length - 1; i++)
            {
                sum.push_back(900);
            }
        }
    }
    else
    {
        int k = pow(2, s + 1);
        int len = sum.size() + 1 + k;
        if (len % w == 0)
        {
            sum.insert(sum.begin(), len - k);
        }
        else
        {
            int temp = len % w;
            int add_length = w - temp;
            sum.insert(sum.begin(), len + add_length - k);
            for (int i = 0; i <= add_length - 1; i++)
            {
                sum.push_back(900);
            }
        }
    }
    return sum;
}

void get_r(vector<int> sum)
{
    int k = pow(2, s + 1);

    for (auto it : sum)
    {
        cout << it << '\n';
    }
}

int main()
{
    cin >> w >> s;
    cin >> str;
    vector<int> v = getarray(str);
    vector<int> s = check(v);
    get_r(s);
    // system("pause");
}